$(function(){
	$("#confirmDlg").dialog({
		title:'还有数据未保存',
		modal:true,
		closed:true,
		width:300,
		height:100,
		buttons:[{
			text:'保存',
			handler:saveEdit
		},{
			text:'放弃',
			handler:cancelEdit
		}]
	}) ;
}) ;
var editRow = null ;//存放当前正在编辑的行，默认为null
var expandedNodes = new Array() ;

var editCallback ;//编辑行后的回调函数
function update(){
	try{
		if(editRow==null) return ;
		$("#confirmDlg").dialog('close') ;
		$("#treeManager").treegrid("endEdit",editRow.id) ;
		//更新数据
		var newRow = {
				menuId : editRow.id,
				menuName:editRow.text,
				menuUrl: editRow.menuUrl,
				parentId:editRow.parentId,
				displayNo:editRow.displayNo
		} ;
		$.post(base+"/menuManager/modify",newRow,function(msg){
			reloadTree() ; 
		}) ;
		editRow = null ;
		cancelCallback = null ;
		editCallback = null ;
	}catch(e){
		alert(e.message) ;
	}
}
function saveEdit(){
	if(editCallback)editCallback() ;
	editCallback = null ;
}
var cancelCallback ;//取消后的回调函数
function cancelEdit(){
	$("#confirmDlg").dialog('close') ;
	$("#treeManager").treegrid("cancelEdit",editRow.id) ;
	if(cancelCallback){
		cancelCallback() ;
	}else{
		editRow = null ;
	}
	cancelCallback = null ;
}
function showMenu(e, node) {
	e.preventDefault();
	$('#menuTree').tree('select', node.target);
	$('#mm').menu('show', {
		left : e.pageX,
		top : e.pageY
	});
}
//重新加载树
function updateTree() {
	editRow = null ;
	reloadTree() ;
}
//双击行要修改行的时候
function dbClickRow(row){
	try{
		var save = function(){//保存上一条记录，并且开始编辑下一条记录
			$("#confirmDlg").dialog('close') ;
			if(editRow){//如果当前正在编辑记录
				$("#treeManager").treegrid("endEdit",editRow.id) ;
				//更新数据
				$.post(base+"/menuManager/modify",editRow,function(msg){
					reloadTree(editRow.id) ; 
				}) ;
			}
			//进入编辑新记录状态
			editRow = row ;
			$("#treeManager").treegrid("beginEdit",row.id) ;
		} ;
		var cancel = function(){//如果是取消，则直接先取消原有的，然后开始编辑新行
			//进入编辑新记录状态
			editRow = row ;
			$("#treeManager").treegrid("beginEdit",row.id) ;
		};
		cancelCallback = cancel ;
		
		if(editRow!=null){//说明当前还有没有完结的编辑行
			$("#confirmDlg").dialog('open') ;	
			editCallback = save ;
		}else{
			save() ;
		}
	}catch(e){
		alert(e.message) ;
	}
	return false ;
}

//单击行的时候
function clickRow(){
	return false ;
}
function onExpand(row) {
	try {
		expandedNodes.push(row.id) ;
	} catch (e) {
		alert(e.message);
	}
}
function addMenu(){
	/**
	 * 这里先判断是否有选中的行，如果有，则以这个行为父节点，如果没有，那么就以0为父节点
	 */
	try{
		var parentId = 0 ;
		var row = $("#treeManager").treegrid("getSelected") ;
		if(row==null) parentId = 0 ;
		else parentId = row.id ;
		
		var newNode = {menuName:"新添加节点",menuUrl:" ",displayNo:0,parentId:parentId} ;
		$.post(base+"/menuManager/add",newNode,function(msg){
			reloadTree() ; 
		}) ;
	}catch(e){
		alert(e.message);
	}
}
function removeMenu(){
	var row = $("#treeManager").treegrid("getSelected") ;
	if(row==null) return ;
	$.post(base+'/menuManager/remove',{menuId:row.id},function(msg){
		removeExpandedItem(row.id) ;
		reloadTree() ;
	}) ;
}
function reloadTree(param){
	try{
		$("#treeManager").treegrid("reload",param) ;
	}catch(e){
		alert(e.message) ;
	}
}
function onCollapse(row){
	removeExpandedItem(row.id) ;	
}
//重新打开刷新前打开的节点
function reExpandNode(){
	var isAll = false ;
	while(!isAll){
		isAll = true ;
		for(var i = 0 , size = expandedNodes.length ; i < size ;i ++){
			var id = expandedNodes[i] ;
			var node = $("#treeManager").treegrid("find",id) ;
			if(node==null){
				isAll = false ;					
			}else{
				$("#treeManager").treegrid("expand",id) ;
			}
		}
	}
}
function removeExpandedItem(id){
	for(var i = 0 , size = expandedNodes.length ; i < size ;i ++){
		if(expandedNodes[i]==id){
			expandedNodes.splice(i,1) ;
		}
	}
}